package com.example.webflux;

import org.springframework.http.codec.ServerSentEvent;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.time.Duration;

/**
 *  webflux中的SSE类似于springboot中的websocket
 *  注意用浏览器访问时能看到数据流，用postman需要workspace创建websocket请求方式才行
 *
 *  actuator 中的endpint创建的实现机制其实用的就是websocket方式
 *
 */
@RestController
public class SSEdemo {

    @GetMapping("/ssedome")
    public Flux<ServerSentEvent<User>> getRandomUser(){
        return Flux.interval(Duration.ofSeconds(1))
                .map(i-> ServerSentEvent.<User>builder()
                        .data(User.builder()
                                .age(i.intValue())
                                .name("Evan"+i)
                                .build())
                        .build());
    }
}
